package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseModifyDetail;
import com.softer.wxzj.entity.BaseModifyReq;
import com.softer.wxzj.entity.BaseOrganization;
import com.softer.wxzj.entity.OrgBankInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 */
@Repository
public interface OrgBankInfoMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(OrgBankInfo record);

    int insertSelective(OrgBankInfo record);

    OrgBankInfo selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(OrgBankInfo record);

    int updateByPrimaryKey(OrgBankInfo record);

    /**
     * 启用/停用账号 1启用，0停用
     *
     * @param id    账号ID
     * @param state 1启用，0停用
     * @return 修改结果
     */
    int updateState(@Param("id") String id, @Param("state") String state, @Param("userName") String userName);

    /**
     * 查询某个物业企业下的所有账号
     *
     * @param orgBankInfo 查询实体
     * @return 账号列表
     */
    List<OrgBankInfo> getOrgBankInfoList(OrgBankInfo orgBankInfo);

    /**
     * 根据ID查询变更记录
     *
     * @param baseModifyReq 查詢实体 账号ID（也是变更表中的业务ID）
     * @return 变更记录列表
     */
    List<BaseModifyReq> getReqListById(BaseModifyReq baseModifyReq);

    /**
     * 停用修改的账号ID下的银行关联的其他账号
     *
     * @param id       修改的账号ID
     * @param userName 操作人
     * @return 操作结果
     */
    int stopBankInfo(@Param("id") String id, @Param("userName") String userName);

    /**
     * 停用修改的账号ID下的银行关联的其他账号
     *
     * @param bankId   银行ID
     * @param userName 操作人
     * @return 操作结果
     */
    int stopBankInfoByBankId(@Param("bankId") String bankId, @Param("userName") String userName);

    /**
     * 模糊查询某个物业企业下的所有账号
     *
     * @param fuzzy 模糊查询字段
     * @param orgId 企业ID
     * @return 账号列表
     */
    List<OrgBankInfo> fuzzyOrgBankInfoList(@Param("fuzzy") String fuzzy, @Param("orgId") String orgId);

    /**
     * 模糊查询 根据ID查询变更记录
     *
     * @param id    账号ID（也是变更表中的业务ID）
     * @param fuzzy 模糊查询字段
     * @return 变更记录列表
     */
    List<BaseModifyReq> fuzzyReqListById(@Param("id") String id, @Param("fuzzy") String fuzzy);

    List<OrgBankInfo> getList();

    /**
     * 获取企业下可以账号列表
     *
     * @param id 企业ID
     * @return 银行账户列表
     */
    List<OrgBankInfo> getOrgBankAccount(String id);

    OrgBankInfo selectAll(String payNo);

    /**
     * 根据银行和状态查询是否存在使用中的账号
     *
     * @param orgBankInfo 拨款账号实体
     * @return 账号ID
     */
    String getOrgBankByBankIdAndState(OrgBankInfo orgBankInfo);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int selectCountById(String id);

    /**
     * 根据项目ID查询该项目的收款单位
     *
     * @param id 项目ID
     * @return 收款单位集合（申请单位和施工单位）
     */
    BaseOrganization getOrgByReqId(String id);

    /**
     * 外网查询收款账号变更详情
     *
     * @param id 收款账号ID（也是变更表中的业务ID）
     * @return 收款账号变更详情列表
     */
    List<BaseModifyDetail> getModifyDetailList(String id);
}
